// 知识点1：非类型模版参数，可以使用一个非类型参数（一个值或者指针和引用）来指定非类型参数，个人觉得相当于宏定义#define，特殊的就是指针和引用的实参必须与静态的生存期

// 知识点2：编译器会使用字面常量的大小代替非类型参数，若是字符串还会加一

// begin()是一个模版函数，接受一个容器的引用，返回指向容器第一个元素的迭代器

// end()是一个模版函数，接受一个容器的引用，返回指向容器最后一个元素下一个地方的迭代器
#include "ex16_6.h"
#include <iostream>
#include <list>
#include <string>
#include <vector>
using namespace std;

int main(int argc, char** argv) {
  int arr[3] = {1, 2, 3};
  cout << "第一个元素：" << *begin(arr) << endl;
  cout << "最后一个元素：" << *(end(arr) - 1) << endl;
  system("pause");
  return 0;
}